Hits stream rewind

ABSTRACT

Schemes for rewinding a HITS stream in video recorder and playback systems are presented herein. Reference pictures are stored for a group of pictures, allowing subsequent pictures to be decoded from the reference pictures. The foregoing significantly reduces the number of picture decodes required to display a HITS stream in reverse order.

RELATED APPLICATIONS

[0001] This application is a continuation-in-part of U.S. application Ser. No. 10/317,389, filed Dec. 11, 2002 and entitled “COMMAND PACKET SYSTEM AND METHOD SUPPORTING IMPROVED TRICK MODE PERFORMANCE IN VIDEO DECODING SYSTEMS” by Kellerman et. al., which claims priority to Provisional Application, Serial No. 60/426,844, filed Nov. 15, 2002, by Kellerman, et. al., both of which are incorporated by reference herein.

FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

[0002] [Not Applicable]

BACKGROUND OF THE INVENTION

[0003] The present invention relates to video recorder and playback systems, and more particularly to controlling the presentation of content.

[0004] Television (TV) content distribution is quickly migrating from analog formats to compressed digital formats. Currently, distribution of digital video content for TV display is dominated by use of the MPEG-2 video compression standard (ISO/IEC 13818-2). MPEG-2 and its predecessor MPEG-1 define the standards to compress video content using a combination of various techniques. An MPEG-encoded stream may have three types of pictures, Intra-coded (I), Predicted (P) and Bi-directionally predicted (B). I-pictures are not compressed using any temporal predictions and can be decoded without the need of any other picture. The P-pictures perform temporal predictions from a picture that comes before it in the display order. Thus, decode of P-pictures requires one picture (from the past) to be available with the decoder for performing temporal predictions. This prediction picture may be either an I-picture or another P-picture. The B-pictures are bi-directionally predicted and, hence, use two pictures for prediction, one from the past and another from the future (in display order).

[0005] During normal decode of MPEG streams, video decoders store the last two decompressed I/P pictures in memory. The last I/P picture is used for predicting an incoming P-picture and the last two I/P pictures are used for predicting an incoming B-picture. During a Rewind operation, the pictures have to be displayed in the reverse order. The video stream is itself fed to the decoder through a system that first recorded the stream on a recordable media such as a hard-disk. A Rewind operation is complex because B-pictures cannot be decoded from the previously decoded pictures in the rewind order. Rather, the last two prediction pictures in the forward decode order are needed by the decoder in order to decode a B-picture.

[0006] The foregoing can be accomplished by decoding pictures in the forward picture order starting from the last I-picture before the B-picture in the forward decoding order. The I-picture is used as a reference picture since I-pictures do not require any other picture to be decoded. Further, the intervening pictures between the reference picture and the current picture only need to be decoded but not displayed.

[0007] However, a special class of MPEG-2 streams, known as Headend In The Sky (HITS) streams, do not include I-pictures, in order to increase the video compression and reduce the bandwidth required to transmit a video stream. Instead, HITS streams use a progressive refresh mechanism to build reference pictures. The progressive refresh mechanism of HITS mandates that each P-picture have at least one intra-coded slice(s), where a slice is 16 horizontal lines of pictures. Furthermore, the intra-coded slice(s) in a P-picture will be just below the intra-coded slice(s) of the previous P-picture. The top slice is intra-coded for a P-picture following a P-picture with an intra-coded slice at the bottom of the picture. The number of intra-coded slices in a P-picture is called the “refresh-rate” of the stream. The streams also ensure that the slices above the intra-coded slice(s) predict only from those slices of the previous P-picture. The streams also ensure that the slices above the intra-coded slice(s) predict only from those slices of the previous P-picture that are above the current intra-coded slices. Thus, the slices are progressively refreshed from top to bottom. This scheme ensures that if a series of pictures is decoded starting from a P-picture whose first-slice is intra-coded, then a “clean” refreshed picture is built after all slices have been progressively refreshed. The picture whose first-slice is intra-coded is called an Entry Point (EP) picture. Typical values of slice refresh rates are 1 and 3 for a stream with a vertical size of 480 pixels (30 slices, each of 16-lines). Thus, a clean picture may be built by decoding 30 P-pictures when the refresh rate is 1, and 10 P-pictures when the refresh rate is 3.

[0008] To perform a Rewind operation on a HITS stream, a video decoder first builds a clean reference using the progressive refresh mechanism, and decodes the intervening pictures between the clean reference and the current picture in the rewind sequence, for each picture.

[0009] Thus, an existing decoder has to decode multiple pictures for displaying a single picture. If such a decoder is unable to decode multiple pictures in the given time limit for getting ready with a new picture for display, the video quality suffers.

[0010] Further limitations and disadvantages of conventional and traditional systems will become apparent to one of skill in the art through comparison of such systems with the invention as set forth in the remainder of the present application with reference to the drawings.

BRIEF SUMMARY OF THE INVENTION

[0011] A system, method, and apparatus for rewinding a HITS stream are described herein. A reference picture is selected for a given segment of pictures, from which each of the pictures in the segment are data-dependent. The pictures in the segment are displayed in reverse order by decoding each picture in the forward decode order between the reference picture and the picture to be displayed for each picture in the segment.

[0012] In another embodiment, the reference picture is a clean reference picture in a HITS stream. The pictures in an EP-EP segment are decoded by decoding and storing the clean reference picture immediately preceding the EP to EP segment in the forward order. The pictures in the EP to EP segment are decoded in reverse order by decoding each P-picture in the forward decode order between the clean reference picture and the picture to be displayed. Additionally, multiple B-pictures can be decoded together. As well, a picture can be displayed directly from the past prediction buffer.

[0013] In another embodiment, the reference picture includes P-pictures located at some point within an EP to EP segment, a midpoint picture, such as pictures towards the middle of the EP to EP segment. The pictures in the EP to EP segment that come after the midpoint picture are decoded using the midpoint picture as the reference picture. The pictures in the EP to EP segment that are before the midpoint picture are decoded using a clean reference picture.

[0014] In another embodiment, three reference pictures are used in an EP to EP segment.

[0015] These and other advantages and novel features of the present invention, as well as illustrated embodiments thereof will be more fully understood from the following description and drawings.

BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS

[0016] A better understanding of the invention can be obtained when the following detailed description of various exemplary embodiments is considered in conjunction with the following drawings.

[0017]FIG. 1 is a system diagram illustrating an embodiment of a personal video recorder system in accordance with certain aspects of the present invention;

[0018]FIG. 2 is a system diagram illustrating an embodiment of a recording process;

[0019]FIG. 3 is a system diagram illustrating an embodiment of a video playback process;

[0020]FIG. 4 is a block diagram of an exemplary HITS stream;

[0021]FIG. 5 is a flow diagram for displaying pictures during a rewind operation in accordance with one embodiment of the present invention;

[0022]FIG. 6 is a flow diagram for displaying pictures during a rewind operation in accordance with another embodiment of the present invention;

[0023]FIG. 7 is a flow diagram for displaying pictures during a rewind operation in accordance with another embodiment of the present invention; and

[0024]FIG. 8 is a block diagram of an exemplary video decoder in accordance with an embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

[0025]FIG. 1 is a system diagram illustrating an embodiment of a personal video recorder system 100 that is built in accordance with certain aspects of the present invention. The personal video recorder system 100 includes a decoder 120 that receives a data transport stream (TS) 115 from some source. The TS 115 may be received by the decoder 120 from a host processor 110, or any other source 105 without departing from the scope and spirit of the invention. The host processor 110 or the any other source 105 is the device that controls the playback (including trick play playback) of the data. The host processor 110 or the any other source 105 and the decoder 120 may be included within a single device or separate devices.

[0026] The decoder 120 is operable to perform decoding of the TS 115, as shown in a functional block 122 within the decoder 120. Similarly, the decoder 120 is operable to perform decoding of the MPEG TS 117, as shown in a functional block 124 within the decoder 120. The now decoded TS 135, is passed to an output device shown as a display 140. Again, other output devices may be employed to accommodate various data types, including audio data types. The use of a display 140 is used to show the exemplary situation of video data TSs. The display 140 is operable to perform playback of the now decoded TS 135. The decoded TS 135 maybe of various data types, including audio and video data types.

[0027] The decoded TS 135 is now operable for playback, trick play, and other operations within the output device. In one particular situation, the decoded TS may be a decoded MPEG TS 137 that is operable for playback, trick play, and other operations.

[0028]FIG. 2 is a system diagram illustrating an embodiment of a simplified digital channel recording process 200 that is performed in accordance with certain aspects of the present invention. The FIG. 2 shows one embodiment where digital channel recording may be performed, in a simplified manner when compared to previous systems, using certain aspects of the present invention. The recording process of a digital video stream is given in the FIG. 1. In this embodiment, a personal video recorder (PVR) digital-channel-recording process can be employed as set forth below.

[0029] The selected video service is contained in a transport stream (TS) that is received as shown in a radio frequency (RF) signal, which is received by a tuner 210. The tuner 210 is operable to down-convert the channel that contains the transport stream, from RF to intermediate frequency (IF). The Demodulation block, shown as a demodulator 215, demodulates the IF to base-band digital data and outputs the transport stream (shown as an MPEG TS) and sends the data to the decryption block 220.

[0030] The decryption block 220 decrypts the packets of the TS into clear data if the service is authorized. This output TS stream goes to the Data Transport Processor 225. The Data Transport Processor selects the requested service and then re-multiplexes it into a new TS and stores the new TS data in a TS FIFO buffer 232 in synchronous dynamic random access memory (SDRAM) 230.

[0031] This new TS is then transferred to a hard disk 250. The data within the TS FIFO buffer 232 is operable to be communicated to the hard disk 250. The CPU 240 controls the storing of the data from the TS FIFO 232 to the hard drive (hard disk 250). This is done using DMA engines which send the data over the PCI bus 241 to the super I/O controller chip 245 containing the IDE interface to the hard drive (hard disk 250) itself. If desired, the IDE ATA-3 Advanced Technology Attachment Interface with Extensions—AT Attachment 3 Interface protocol is employed between the super I/O controller chip 245 and the hard disk 250. A Start Code Index Table (SCIT) 251 is also generated and stored in the hard disk 250 (see below for detailed description). A TS file 252 is then stored within the hard disk 252.

[0032] The embodiment of the present invention shown in the FIG. 2 shows how a TS may be generated and stored in a hard disk 250.

[0033]FIG. 3 is a system diagram illustrating an embodiment of a video playback process 300 that is performed in accordance with certain aspects of the present invention. The particular example of video data retrieval and playback is shown in the FIG. 3, but these aspects of the present invention are also extendible to retrieval and playback of other types of data, including audio data and other digital data types.

[0034] For a program recorded on the hard drive/hard disk 310, a personal video recorder, or other operable system, can play back that program using that which is described below in the system diagram of the FIG. 3. A processor, that may include a CPU 390, reads the TS data (shown as the TS file 312) from the hard drive/hard disk 310 based on the user selected playback mode. The correct TS data (from the TS file 312 within the hard drive/hard disk 310) is read into TS presentation buffer 332 within a SDRAM 330 using DMA engines.

[0035] Data may be read from the hard drive/hard disk 310 in a manner similar to the manner in which data is written into the hard drive/hard disk 310, a super I/O controller chip 320 may communicatively couple with the hard disk 310 and perform data transfer using the IDE ATA-3 protocol. The super I/O controller chip 320 then communicatively couples to the TS presentation buffer 332 within the SDRAM 330 via a PCI bus 323 and a PCI I/F 325. The data is output from the TS presentation buffer 332 and is then passed to a data transport processor 335. The data transport processor then de-multiplexes the TS into its PES constituents and passes the audio TS to an audio decoder 360 and the video TS to a video transport processor 340 and then to a MPEG video decoder 345 that is operable to decode and extract embedded, TS formatted command packets, which may include instructions to perform trick play functionality. The audio data is then sent to the output blocks, and the video is sent to a display engine 350. The display engine 350 is responsible for and operable to perform scaling the video picture, rendering the graphics, and constructing the complete display, among other functions. Once the display is ready to be presented, it is passed to a video encoder 355 where it is converted to analog video using an internal digital to analog converter (DAC). The digital audio is converted to analog in the audio digital to analog converter (DAC) 365 while a Sony Philips Digital Inter-Face (SPDIF) output stream is also generated and transmitted.

[0036] The video TS comprises pictures that are compressed representations of individual images forming a video. The video decoder 345 decompresses the pictures, thereby recovering the individual images forming the video. Compression is achieved by taking advantage of both spatial and temporal redundancy in the image forming the video. Compression using temporal redundancy takes advantage of redundancies between video images recorded in substantially the same time period. Redundant features among the images are recorded in one picture referenced by other pictures. As a result, some pictures are data dependent on other pictures. The video decoder 345 includes reference picture frame buffers for storing reference pictures for use in decoding pictures.

[0037] Referring now to FIG. 4, there is illustrated a block diagram describing an exemplary HITS stream. A HITS stream is a special class of MPEG-2 streams that includes P-pictures, P, and B-pictures, B, but does not include I-pictures. There are usually a uniform number of B-pictures, for example B₀₁ and B₀₂, between each of the P-pictures. HITS streams do not include I-pictures because I-pictures require the most memory and bandwidth. Instead, HITS streams use a progressive refresh mechanism to build reference pictures. In the progressive refresh mechanism, each P-picture, P, has at least one intra-coded slice(s), I, where a slice comprises 16 horizontal lines of pixels. Furthermore, the intra-coded slice(s) in a P-picture, e.g., P₅ will be just below the intra-coded slice(s) of the previous P-picture, e.g., P₄. The top slice, I, is intracoded for a P-picture, P₀, following a P-picture, P, with an intracoded slice, I, at the bottom of the picture. Additionally, the streams also ensure that the slices above the intra-coded slices, S, predict only from those slices of the previous P-picture that are above the current intracoded slice(s), I. The foregoing ensures that if a series of pictures is decoded starting from a P-picture whose first-slice is intra-coded, then a “clean” refreshed picture is built after all slices have been progressively refreshed. The P-picture whose first-slice is intra-coded is called an Entry Point (EP) picture, EP. The P-picture immediately before the EP picture, EP, i.e., the P-picture with the I-slice(s), I, at the bottom of the picture, RP, will be referred to as a clean reference picture.

[0038] The rewind operation on a HITS stream, starting from arbitrarily chosen picture, B_(5,2), can be achieved by building the clean reference picture, RP₁, immediately preceding the arbitrarily chosen picture B_(5,2), and decoding each intervening P-picture in the forward decode order before the chosen picture, B_(5,2). Building the clean reference picture RP₁ involves decoding each P-pictures in the EP to EP segment comprising RP₁, e.g., P₀′ . . . P₅′. While decoding the intervening P-pictures, the last two P-pictures are stored in memory. Upon decoding the last two P-pictures, P₄, P₅ before the chosen picture, B_(5,2), the decoder can then decode the chosen picture. The foregoing is repeated for each picture in the rewind sequence. The decoded pictures for various pictures in the rewind sequence for the HITS stream illustrated in FIG. 3 are shown in the table below. Picture Displayed Pictures Decoded B_(5,2) P₀′ . . . P₅′, P₀ . . . P₅ P₀₊ B_(5,2) B_(5,1) P₀′ . . . P₅′, P₀ . . . P₅ P₀₊ B_(5,1) P₅ P₀′ . . . P₅′, P₀ . . . P₄P₅ B_(4,2) P₀′ . . . P₅′, P₀ . . . P₄P₅ B_(4,2) B_(4,1) P₀′ . . . P₅′, P₀ . . . P₄P₅ B_(4,1) P₄ P₀′ . . . P₅′, P₀ . . . P₃ P₄ B_(3,2) P₀′ . . . P₅′, P₀ . . . P₃ P₄ B_(3,2) B_(3,1) P₀′ . . . P₅′, P₀ . . . P₃ P₄ B_(3,1) P₃ P₀′ . . . P₅′, P₀ . . . P₂ P₃ B_(2,2) P₀′ . . . P₅′, P₀ . . . P₂ P₃ B_(2,2) B_(2,1) P₀′ . . . P₅′, P₀ . . . P₂ P₃ B_(2,1) P₂ P₀′ . . . P₅′, P_(0,) P₁ P₂ B_(1,2) P₀′ . . . P₅′, P_(0,) P₁ P₂ B_(1,2) B_(1,1) P₀′ . . . P₅′, P_(0,) P₁ P₂ B_(1,1) P₁ P₀′ . . . P₅′, P₀ P₁ B_(0,2) P₀′ . . . P₅′, P₀ P₁ B_(0,2) B_(0,1) P₀′ . . . P₅′, P₀ P₁ B_(0,1) P₀ P₀′ . . . P₅′, P₀ B_(5,2)′ P₀′ . . . P₅′, P₀ B_(5,1)′ P₀′ . . . P₅′, P₀

[0039] As can be seen, decoding pictures in the rewind sequence involves decoding large numbers of pictures. For example, for a HITS stream with a refresh rate of 1, there would be 30 P-pictures between the EP's. For pictures at the end of an EP to EP segment, an additional 30 P-pictures would have to be decoded. Therefore, the number of pictures that would have to be decoded is: $\left( {B + 1} \right){\underset{x = 1}{\overset{P}{P}}\left( {P + 1} \right)}*1.5$

[0040] where B=# of B-pictures between P-pictures

[0041] where P=# P-pictures in EP to EP segment

[0042] From the above formula, in the example where P=6, and B=2, 189 pictures are decoded to display 18 pictures in reverse order, or an average of 9.5 decoded pictures/displayed picture.

[0043] In order to reduce the processing requirements of the video decoder 345, in accordance with the present invention, the clean reference pictures, e.g., RP₀, RP₁, are stored in a reference picture frame buffer. By storing the clean reference picture in the reference picture frame buffer, the video decoder 345 need only build the reference picture one time for an entire EP-EP segment. Each picture of the EP-EP segment can then be decoded by decoding only the intervening pictures between the clean picture and the picture in the rewind sequence. For example, by storing RP₀ in a reference picture frame buffer, RP₀ need only be decoded once for all the pictures, P₀ . . . P₅.

[0044] Referring now to FIG. 5, there is illustrated a flow diagram for displaying pictures in a HITS stream during a rewind operation in accordance with an embodiment of the present invention. At 700 the EP-EP segment in the current rewind order is selected. At 705, the clean reference picture preceding the EP-EP segment is decoded. At 710, the clean reference picture is stored in a reference picture frame buffer. At 715, each intervening P-picture between the clean picture and the picture to be displayed is decoded in the forward decode order. During decoding of the P-pictures the last two P-pictures in the forward decode order are stored in frame buffers. Upon decoding and storing the last two P-picture in the forward decode order that precede the picture to be displayed, the picture to be displayed can be decoded. Accordingly, at 720, the picture to be displayed is decoded and displayed. At 725, if there are remaining pictures in the EP to EP segment to be displayed, the next picture in the rewind sequence is selected, and 715-720 are repeated. If at 725, there are no remaining pictures in the EP to EP segment, the next EP to EP segment is selected at 700, and 705-725 are repeated.

[0045] By storing the clean reference picture in a frame buffer, the clean reference picture need only be decoded one time per EP to EP segment. Accordingly, the number of pictures required to decode an EP to EP segment is: ${B*P} + P + {\left( {B + 1} \right){\sum\limits_{x = 1}^{P}x}}$

[0046] where B=# of B-pictures between P-pictures (B=2 in the example)

[0047] P=# of P-pictures per EP to EP segment (P=6 in the example)

[0048] The sequence of decoded pictures for the rewinding the pictures shown in FIG. 4 is described in the table below: Picture Displayed Pictures Decoded P₅ P₀′ . . . P₅′, P₀ . . . P₅ B_(4,2) P₀ . . . P₅ B_(4,2) B_(4,1) P₀ . . . P₅ B_(4,1) P₄ P₀ . . . P₄ B_(3,2) P₀ . . . P₄ B_(3,2) B_(3,1) P₀ . . . P₄ B_(3,1) P₃ P₀ . . . P₃ B_(2,2) P₀ . . . P₃ B_(2,2) B_(2,1) P₀ . . . P₃ B_(2,1) P₂ P_(0,) . . . , P₂ B_(1,2) P_(0,) . . . , P_(2,) B_(1,2) B_(1,1) P₀ . . . P_(2,) B_(1,1) P₁ P₀ P₁ B_(0,2) P₀ P₁ B_(0,2) B_(0,1) P₀ P₁ B_(0,1) P₀ P₀ B′_(5,2) P₀₊B′_(5,2) B′_(5,1) P₀₊B′_(5,1)

[0049] As can be seen from the foregoing, an EP to EP segment with 2 B-pictures between the 6 P-pictures requires decoding 69 pictures, or 3.833 decoded pictures/displayed picture.

[0050] It is noted that both B_(x1) and B_(x2) are both dependent on P_(x) and P_(x+1). Bx1 and Bx₂ can be decoded and displayed by first decoding each of the P pictures between R and P_(x+1), and then decoding and displaying B_(x2). After decoding and displaying B_(x2), the P pictures including and between RP₀ and P_(x+1) are decoded and then B_(x1) is decoded and displayed. However, after decoding and displaying B_(x2), the pictures, P_(x) and P_(x+1) are stored in the past prediction buffer and the future prediction buffer. Accordingly, B_(x1) can be decoded without decoding the P-pictures including and between RP₀ and P_(x+1).

[0051] Referring now to FIG. 6, there is illustrated a flow diagram for displaying pictures in a HITS stream during a rewind operation in accordance with an embodiment of the present invention. At 800 the EP to EP segment in the current rewind order is selected. At 805, the clean reference-picture preceding the EP to EP segment is decoded. At 810, the clean reference picture is stored in a reference picture frame buffer. At 815, each intervening P-picture between the clean picture and the picture to be displayed is decoded in the forward decode order. During decoding of the P-pictures the last two P-pictures in the forward decode order are stored in frame buffers. Upon decoding and storing the last two P-picture in the forward decode order which precede the picture to be displayed, the picture to be displayed can be decoded. Accordingly, at 820, the picture to be displayed is decoded and displayed.

[0052] At 825, a determination is made whether there are any remaining pictures in the EP to EP segment. If there are no remaining pictures in the EP to EP segment, the next EP to EP segment is chosen at 800, and 805-825 are repeated.

[0053] If during 825, there are remaining pictures in the EP to EP segment, at 830 the next picture in the rewind sequence is selected. At 832, a determination is made whether both the picture displayed during 820 and the next picture selected during 830 are both B-pictures. If both the picture displayed during 820 and the next picture selected during 830 are both B-pictures, the next picture selected during 830 can be decoded using the P-pictures that are stored in the frame buffers. Accordingly, the next picture is decoded from the P-pictures that are stored in the frame buffer at 820 and 825 is repeated. If both the picture displayed during 820 and the next picture selected during 830 are not both B-pictures, 815-832 are repeated.

[0054] For the exemplary HITS stream described in FIG. 4, the order of decodes and displays is shown in the table below. Picture Displayed Pictures Decoded P₅ P₀′ . . . P₅′, P₀ . . . P₄ P₅ B_(4,2) P₀ . . . P₅ B_(4,2) B_(4,1) P₀ . . . P₅ B_(4,1) P₄ P₀ . . . P₄ B_(3,2) P₀ . . . P₄ B_(3,2) B_(3,1) P₀ . . . P₄ B_(3,1) P₃ P₀ . . . P₃ B_(2,2) P₀ . . . P₃ B_(2,2) B_(2,1) P₀ . . . P₃ B_(2,1) P₂ P₀ . . . P₂ B_(1,2) P₀ . . . P₂ B_(1,2) B_(1,1) P₀ . . . P₂ B_(1,1) P₁ P₀ . . . P₁ B_(0,2) P₀ . . . P₁ B_(0,2) B_(0,1) P₀ . . . P₁ B_(0,1)

[0055] The number of pictures that are decoded can be determines with the following formula: $P + {2*{\sum\limits_{X = 0}^{P}X}} + {B*P}$

[0056] where B=# of B-pictures between P-pictures

[0057] P=# of P-pictures per EP to EP segment

[0058] As can be seen from the foregoing, an EP to EP segment with 2 B-pictures between the P-pictures requires decoding 66 pictures, or 3.666 decoded pictures/displayed picture. The number of picture decodes for other P and B values is shown below. P B Total 4 2 36 6 2 66 8 2 104 10 2 150

[0059] B-pictures use two prediction pictures to decode. One of these prediction pictures comes before the B-picture in the forward display order (known as the past prediction picture) and one of the prediction pictures comes after the B-picture (future prediction picture). For example, with B-picture B_(3,1), the past prediction picture is P₃ and the future prediction picture is P₄. Therefore, if all of the B-pictures that are dependent on P₃ and P₄ are decoded and displayed, one of the prediction buffers of the video decoder contains the past prediction picture, e.g., P₃, that comes next in the rewind order. Accordingly, the past prediction picture can displayed directly from the past prediction buffer.

[0060] Referring now to FIG. 7 there is illustrated a flow diagram for displaying pictures in a HITS stream during a rewind operation in accordance with an embodiment of the present invention. At 900 the EP to EP segment in the current rewind order is selected. At 905, the clean reference picture preceding the EP to EP segment is decoded. At 910, the clean reference picture is stored in a reference picture frame buffer. At 915, each intervening P-picture between the clean picture and the picture to be displayed is decoded in the forward decode order. During decoding of the P-pictures the last two P-pictures in the forward decode order are stored in frame buffers. Upon decoding and storing the last two P-picture in the forward decode order which precede the picture to be displayed, the picture to be displayed can be decoded. Accordingly, at 920, the picture to be displayed is decoded and displayed.

[0061] At 925, a determination is made whether there are any remaining pictures in the EP to EP segment. If there are no remaining pictures in the EP to EP segment, the next EP to EP segment is chosen at 900, and 905-925 are repeated.

[0062] If during 925, there are remaining pictures in the EP to EP segment, at 930 the next picture in the rewind sequence is selected. At 932, a determination is made whether both the picture displayed during 920 and the next picture selected during 930 are both B-pictures. If both the picture displayed during 920 and the next picture selected during 930 are both B-pictures, the next picture selected during 930 can be decoded using the P-pictures that are stored in the frame buffers. Accordingly, the next picture is decoded and displayed (934) from the P-pictures that are stored in the frame buffer at 920 and 925 is repeated. If both the picture displayed during 920 and the next picture selected during 930 are not both B-pictures, a determination 935 is made whether the next picture is a P-picture. If the next picture is a P-picture, the contents of the past prediction picture is displayed directly from the past prediction buffer and 915-932 are repeated. If during 935, the next picture is not a P-picture, 915 to 935 are repeated.

[0063] For the exemplary HITS stream described in FIG. 4, the order of decodes and displays is shown in the table below. Picture Displayed Pictures Decoded P₅ P₀′ . . . P₅′, P₀ . . . P₅ B_(4,2) B_(4,1) P₄ B_(3,2) B_(3,1) P₀ . . . P₃ P₃ B_(2,2) B_(2,1) P₀ . . . P₂ P₂ B_(1,2) B_(1,1) P₀, P₁ P₁ B_(0,2) B_(0,1) P₀ P₀ B_(5,2)′ B_(5,1)′

[0064] The number of pictures that are decoded can be determines with the following formula:

(1.5+P/2+B)P

[0065] As can be seen from the foregoing, an EP to EP segment with 2 B-pictures between the P-pictures requires decoding 39 pictures, or 2.166 decoded pictures/displayed picture. The number of decodes for other values of P and B are shown below: P B Total 6 2 39 8 2 60 10 2 85 12 2 114

[0066] In the above strategy, after building a clean reference picture, the complete EP to EP segment following the clean picture is displayed. An alternative scheme is to build an additional reference picture within an EP to EP segment to minimize the number of pictures that need to be decoded. This additional reference picture is preferably at a midpoint of the P-pictures in an EP to EP segment, such as P3 in the HITS stream described in FIG. 4.

[0067] The sequence of decoded pictures for rewinding the pictures illustrated in FIG. 4 is listed in the table below: Picture Displayed Pictures Decoded B_(5,2) B_(5,1) P₀′ . . . P₅′, P₀ . . . P₅ P₅ B_(4,2) B_(4,1) P₃ . . . P₄ P₄ B_(3,2) B_(3,1) P₃ P₃ B_(2,2) B_(2,1) P₀′ . . . P₅′, P₀ . . . P₂ P₂ B_(1,2) B_(1,1) P₀, P₁ P₁ B_(0,2) B_(0,1) P₀

[0068] The number of pictures that are decoded can be determined with the following formula:

(3+P/4+B)P

[0069] As can be seen from the foregoing, an EP to EP segment with 2 B-pictures between the P-pictures requires decoding 39 pictures, or 2.166 decoded pictures/displayed picture. Although the foregoing requires the same number of picture decodes as the previous example, the benefits of additional reference pictures become more apparent with higher values for P and B. The number of decodes for other values of P and B are shown below: P B Total 6 2 39 8 2 56 10 2 75 12 2 96

[0070] The number of midpoint pictures that are stored can be further increased. The number of pictures required to decode a sequence where three reference pictures are used is described by the following formula:

(4.5+B+P/6)P

[0071] The number pictures that are decoded for different B's and P's are described in the table below: P B Total 6 2 45 8 2 63 10 2 82 12 2 102 14 2 124 16 2 147 18 2 171 20 2 197

[0072] It is also noted that, in general, B-pictures require less memory and bandwidth than P-pictures. Based on empirical statistical data, a B-picture consumes approximately 25% of the data and processing requirements as a P-picture. The foregoing can be factored into the formula by weighting the number of B-pictures by 0.25. The weighted and unweighted number of decodes for schemes presented herein for different P and B are shown below: Weighted Weighted Optimization P B Formula Total Improvement B/4 Total Improvement One Reference, 3 2 (P + 3 + B) * P 24 0.5 20 decoding multiple 4 2 36 0.5 30 B-pictures 6 2 66 0.5 57 8 2 104 0.5 92 10 2 150 0.5 135 One Reference, 6 2 (1.5 + P/2 + B) * P 39 0.5 30 decoding multiple 8 2 60 0.5 48 B-pictures, Past 10 2 85 0.5 70 Prediction picture 12 2 114 0.5 96 2 Reference 6 2 (3 + B + P/4) * P 39 0% 0.5 30 0% 8 2 56 7% 0.5 44 8% 10 2 75 12% 0.5 60 14% 12 2 96 16% 0.5 78 19% 14 2 119 0.5 98 16 2 144 0.5 120 18 2 171 0.5 144 20 2 200 0.5 170 3 Ref. Frames 6 2 (4.5 + B + P/6) * P 45 −15% 0.5 36 −20% 8 2 63 −12% 0.5 51 −15% 10 2 82 −9% 0.5 67 −11% 12 2 102 −6% 0.5 84 −8% 14 2 124 −4% 0.5 103 −5% 16 2 147 −2% 0.5 123 −2% 18 2 171 0% 0.5 144 0% 20 2 197 2% 0.5 167 2%

[0073] As can be seen from the above comparison, the use of three reference pictures becomes advantageous as P exceeds 18.

[0074] Referring now to FIG. 8, there is illustrated a block diagram of an exemplary video decoder 345 in accordance with an embodiment of the invention. The video decoder receives pictures form a presentation buffer and decodes the pictures for display. The decoded pictures for display are provided to the display engine. The video decoder 345 includes a decompression engine 1151, a cache memory 1152, and frame buffers 1153. The decompression engine 1151 performs the requisite decompression of received pictures, transforming the pictures into frames for display. As noted above, the pictures are data dependent from other pictures. Accordingly, the decompression engine 1151 stores past prediction pictures, future prediction pictures, and reference pictures in the frame buffers 1153. Additionally, the decompression engine 1151 can store reference pictures in the frame buffers as well. While decoding pictures for display that are data dependent on the pictures stored in the frame buffers, the decompression engine 1151 uses the pictures stored therein to decode and provide the picture for display to the display engine 350. Additionally, the video decoder also includes a cache 1152 for storing pictures therein, to facilitate decoding pictures for display.

[0075] The personal video recorder system 200 as described herein may be implemented as a board level product, as a single chip, application specific integrated circuit (ASIC), or with varying levels of the system integrated on a single chip with other portions of the system as separate components. The degree of integration of the monitoring system may primarily be determined by speed of incoming MPEG packets, and cost considerations. Because of the sophisticated nature of modem processors, it is possible to utilize a commercially available processor, which may be implemented external to an ASIC implementation of the present system. Alternatively, if the processor is available as an ASIC core or logic block, then the commercially available processor can be implemented as part of an ASIC device wherein the memory storing instructions is implemented as firmware.

[0076] In one embodiment can be implemented by insertion of command packets within the MPEG TS with appropriate TS formatted trick play commands by a host processor, such as host processor described in “Command Packets for Personal Video Recorders”, application Ser. No. 09/951,693, by Demas et. al, which is incorporated herein by reference.

[0077] While the invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the invention. In addition, many modifications may be made to adapt particular situation or material to the teachings of the invention without departing from its scope. Therefore, it is intended that the invention not be limited to the particular embodiment(s) disclosed, but that the invention will include all embodiments falling within the scope of the appended claims. 

1. A method for rewinding a group of pictures, said method comprising: storing a first reference picture from the group of pictures; decoding a first one or more pictures from the group of pictures; displaying the first one or more pictures in reverse order; storing a second reference picture from the group of pictures; decoding a second one or more pictures from the group of pictures; displaying the second one or more pictures in reverse order; storing a third reference picture from the group of pictures; decoding a third one or more pictures; and displaying the third one or more pictures in reverse order.
 2. The method of claim 1, wherein the group of pictures comprises a HITS stream.
 3. The method of claim 1, wherein the group of pictures comprises 20 pictures.
 4. A system for rewinding a group of pictures, said system comprising: one or more image buffers for storing a first, second, and third reference picture from the group of pictures; a decompression engine for decoding a first, second, and third one or more pictures from the group of pictures; and a display engine for displaying the first, second, and third one or more pictures from the group of pictures in reverse order.
 5. The system of claim 4, wherein the group of pictures comprises a HITS stream.
 6. The system of claim 4, wherein the group of pictures comprises 20 pictures. 